Amazon Verified Permissions workshopをやってみた
こんにちは、NTT東日本の白鳥です。
5月28日開催の「AWSを最大活用するための1dayカンファレンス」にご参加いただいた方、誠にありがとうございました。
たくさんの方にご参加いただき、感謝しております。
カンファレンスは終わっても、クラソルとのクロスコラボレーションは続いていきます!
きっかけ
先日のカンファレンスの質疑応答でこのような質問がありました。「Webアプリの認証認可でAmazon Cognitoを利用するのは古くないか?」
古いかどうかはさておき、当日の回答では認証やユーザープールでOIDCを使う話をさせていただきました。しかし、認可のほうではAmazon Verified Permissionsも使えることに触れていませんでした。
当サービスGAして約1年になりますが、まだまだDevelopersIOでの記事も少なく、まだ自身の理解も少なかったため、ちょうどいいワークショップを見つけたのでやってみることにしました。
できるようになること
ワークショップはこちらです。日本語対応は今日時点ではされていないので、英語で読み進めることになります。
本ワークショップを完了すると、こんなことができるようになります。
- Amazon Verified Permissionsのポリシーストアの作成
- 静的ポリシーまたはテンプレートにリンクされたポリシーの作成
- Amazon Verified Permissionsのテストベンチを使ったポリシーのテスト
- ポリシーが追加される前に検証できるよう、スキーマを定義する
- ポリシーストアとIdPの接続のためのアイデンティティソースの利用
- バッチ認証を使用して複数のリクエストを同時に承認する
大きな流れとしては、アプリケーションを構築し、主に認証認可まわりの設定を確認していく形になります。
サンプルのアプリケーションは、ToDoリストを管理するアプリで、API GatewayやLambdaなどを利用したサーバレスアプリをイメージしていただければと思います。
認証にCognito、認可にVerified permissionsを使用します。
ワークショップの中にも概要はありますが、詳細なアプリの構成は本筋ではないので省略します。
やってみた
準備
本ワークショップでは、AWS Cloud9を使っていきます。Cloud9のインスタンス構築はチュートリアル通りに進めます。
AWS Cloud9公式ドキュメント
AWS Cloud9構築が終わったら、ワークショップの手順に基づいて開発環境を整えます。
ここで、アプリケーションの構築まで完了させます。
アプリケーションの構築が完了すると、認証認可まわりは次のような構成になります。
認証認可の動き
- ユーザーがAmazon Cognito経由でサインアップ
- Pre Signup Lambdaがユーザーを確認
- Post Confirmation LambdaがDynamoDBにユーザーを登録、ユーザーのタスクのStarterListを作成
- ユーザーがアプリケーションからリソースを要求する際にCognitoのアクセストークンを送信
- Cognitoがアクセストークンを検証
- API LambdaがDynamoDBからリクエストコンテクストを収集し、Verified permissionsでユーザーがアクセスできるかを検証。承認されたら、ユーザーにリクエストされたリソースを返す
Lab 1 - Amazon Verified Permissions Consoleデモ
ここでは、ポリシーストアの作成、スキーマの編集、サンプルポリシーとポリシーテンプレートの作成を行います。テストベンチを使って、Ceder(シーダー)ポリシーの書き方と、それがどのように働くかを見ていきます。Lab 2 - Amazon Verified Permissionsを使ったアプリケーションの構築
ここでは、Amazon Verified Permissionsを使った認可の仕組みを整えていきます。Lambdaでのポリシーの呼び出しやユーザーがタスクのシェアなどなんらかのアクションを行った際のポリシーの追加を見ていきます。Lab 3 - アイデンティティソースの利用
ここでは、Amazon Verified permissionsとIdPとの連携を行っていきます。 Amazon Verified Permissionsを使うと、Cognitoで生成されたIDまたはアクセストークンを直接渡して認可を引き受けることができます。Lab 4 - 認可機能の改善
最後のLabでは、認可機能のチューニングや改善を行ってUXを改善していく方法を試していきます。パーミッションの固定、X-Rayを利用したトレースやバッチ認証を試しながら、パフォーマンス改善を行います。まとめ
Cederの概念の理解から始まり、Amazon Verified permissionsを使っていくのはなかなか学習コストが高いと感じていましたが、本ワークショップを通じて一通りの動きは理解できたように思います。認可機能をアプリケーションから切り離すことが可能になる、ポリシーチェックが一元化されるといったメリットはあるので、ぜひ使ってみてはいかがでしょうか?
なおAmazon Verified Permissionsに関する記事は、下記の記事一覧も参考にしていただければと思います。